// pages/mbrinfo/mbrinfo.js

//获取应用实例(获取app.js全局变量必须获取应用实例)
const App = getApp()

//网络请求封装
import Request_post from "../../../../request/Request_post"
import Request_get from "../../../../request/Request_get"

//系统设置项目:(请求地址-在封装中已经引入，这里不需要;   api调用的Appid-partner_app_id;   渠道ID-as_appid)
import config from '../../../../config/config'; 

//引入时间函数
var dateArray = require("../../../../utils/CustomFunction/getDayFirstNowLast.js")
var time = require("../../../../utils/CustomFunction/getNowTime.js")

//引入日期时间：（格式化、反格式化）函数
var formatDate = require("../../../../utils/CustomFunction/dateFormat.js")
var unformatDate = require("../../../../utils/CustomFunction/dateUnFormat.js")
var today = require("../../../../utils/CustomFunction//getToday.js")


Page({

	/**
	 * 页面的初始数据
	 */
	data: {

		mini_Appid: App.globalData.miniProgram_appid,
		switch_on_off:"",
		unbind_msg:{},
		mbr_info:{},
		name:"",
		sex:"",
		adr:"",
		oldPwd:"",
		newPwd:"",
		re_newPwd:"",

		// 外链资源
		name_img:config.imageUrl+"name.png",
		delete_img:config.imageUrl+"delete.png",
		question_img:config.imageUrl+"question.png",
		sex_img:config.imageUrl+"sex.png",
		brdcake_img:config.imageUrl+"brdcake.png",
		adr_img:config.imageUrl+"adr.png",

		// raido选项数组（作用1：利用此数组，渲染出raido选项框；作用2：利用数组的value值与api获取的sex值做比对，相等的则默认显示为选中状态；作用3：radio标签做双向数据绑定）
		sexObj: [ 
			{value: 'm', sexdes: '先生',checked: false}, 
			{value: 'f', sexdes: '女士',checked: false}
		],
		
		// 日期选择器定义的初始显示变量
		birthday:"",
	},

	// 日期选择器绑定的方法
	bindbirthdayChange: function(e) {
		this.setData({
			birthday:e.detail.value
		})
		// console.log('当前日期的对应值',e.detail.value)
		// console.log("日期字符串截取："+this.data.birthday)
 	},

		
	// radio选项框绑定的方法
	radioChange(e) {
	console.log('radio发生change事件，携带value值为：', e.detail.value)
		const sexObj = this.data.sexObj
		for (var i = 0; i < sexObj.length ; ++i) {
			sexObj[i].checked = sexObj[i].value === e.detail.value
		}
		this.setData({
				sex:e.detail.value
			})
	},

 

	/**
	 * 会员解绑 switch1Change 事件
	 */
	switch1Change: function (e){
		var that = this
		that.setData({
			switch_on_off: e.detail.value
		})
    if(that.data.switch_on_off === false){	
			//Api请求：04-005 会员解除绑定
			Request_post.post(
				config.domainName+"api_wxmkt_server/mbrreg/unbandingwxmbr",
				{
					cltid: config.cltid,
				},
				function(res){
					 if(res && res.return_no == 1){
						wx.showToast({   //弹窗提示：解绑成功
							title: res.return_msg,
							icon: 'success',
							duration: 10000,
							success:function(){
								wx.removeStorageSync('StrMbrInfo')
								wx.redirectTo({ 										//会员解绑成功：跳转到regbind注册绑定页面 （wx.navigateTo 是跳转页面；wx.redirectTo是打开新页面，关闭现有页面）
									url:"/SubpkgMemberbiz/pages/Member/MbrRegBind/MbrRegBind"
								});
							},
						})
					 }else{
						wx.showModal({
							title:res?res.return_msg:'会员解绑Api调用失败！'
						})
					 }
				}
				)

		}
  },



	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (options) {
		var that = this

		//Api请求：04-001 会员信息查询（验证已绑定）
		getApp().loginPromise.then(v => {	//app.js的Promise成功回调（全局变量赋值成功后才执行请求）
			Request_get.get(
				config.domainName+"api_wxmkt_server/mbrreg/findwxmbr",
				{},
				function(res){
					console.log('回调信息',res)
				if(res && res.return_no == 1){
					const sexList = that.data.sexObj
					for( let i = 0; i < sexList.length; i++){
						if(sexList[i].value == res.return_data.sex){
							sexList[i].checked = true
						}else{
							sexList[i].checked = false
						}
					}
					that.setData({
						mbr_info:res.return_data,
						name:res.return_data.name,
						adr:res.return_data.adr,
						sex:res.return_data.sex,
						birthday:res.return_data.birthday,
						sexObj:sexList,
					})
					console.log(that.data.birthday)
				}
			})
		})
 
	},


	 

	/**
	 * 确认修改 updateChange事件（1：修改密码、2：更新资料）
	 */
	updateChange:function(){
		var that = this
		/**1：修改密码 */
		if(that.data.oldPwd  == "" && that.data.newPwd == '' &&  that.data.re_newPwd ==''  ){    
			/**修改会员资料 (修改密码的3个值都未填写，则不操作修改密码) */
			//格式化日期变量  将 yyyy-mm-dd 转为  yyyymmdd
			that.setData({
				bdt:that.data.birthday.substring(0,4)+that.data.birthday.substring(5,7)+that.data.birthday.substring(8,10)
			})	

			// 首先读取会员信息缓存，名字、地址、生日
			let OLDname = wx.getStorageSync('StrMbrInfo').name
			let OLDadr = wx.getStorageSync('StrMbrInfo').adr   
			let OLDbirthday = wx.getStorageSync('StrMbrInfo').birthday

			// 防止将会员信息恢复成初始值的判断（防止利用此bug重复领取：完善资料送积分）
			if(OLDname != '未登记' || OLDadr != '' || OLDbirthday != ''){
				if( that.data.name == '未登记' ||  that.data.adr == '' ||  that.data.birthday == '0000-00-00'){
					wx.showToast({   // 资料修改成功：弹窗提示
						title: '输入不合法',
						duration:2000,
						mask:true,
					})
					return;
				}
			}

			//Api请求：04-006 会员资料修改
			Request_post.post(
				config.domainName+"api_wxmkt_server/mbrreg/modifywxmbr",
				{
					name: that.data.name,
					sex: that.data.sex,
					birthday: that.data.bdt,
					cltid: config.cltid,
					adr: that.data.adr,
				},
				function(res){
					if(res && res.return_no == 1){   //资料修改提交成功
						// console.log(res)
						/** Api mktapi服务：04-001会员信息查询（验证已绑定） */
						Request_get.get(
							config.domainName+"api_wxmkt_server/mbrreg/findwxmbr",
							{
								appid: config.as_appid,
								appuserid: App.globalData.wx_openid, 
								unionid: App.globalData.unionid,
							},
							function(res){
								wx.removeStorageSync('StrMbrInfo')
								wx.setStorageSync('StrMbrInfo', res.return_data)
								let name = wx.getStorageSync('StrMbrInfo').name
								let adr = wx.getStorageSync('StrMbrInfo').adr   
								let birthday = wx.getStorageSync('StrMbrInfo').birthday

								// 修改之前的 名字、地址、生日 这三项，只要有1项是初始值，则可继续判断下一个逻辑：当这三项都不是初始值的时候，进行完善资料送积分（必须有规则）
								// 之所以要先对修改之前的值进行判断，是限制不是每一次点击确认修改，都会出发送积分的动作，但是这样做还是有bug（如：将某一项改为初始值后，再进行修改，还是会触发送积分）
								if(OLDname == '未命名' || OLDadr == '' || OLDbirthday == '0000-00-00'){
									if(name != '未命名' && adr != '' && birthday != '0000-00-00'){
										// 调用积分增加规则的查询方法（积分增加规则方法中 调用 增加积分的方法: 完善资料送积分）
										that.findmbritgruladd();
										that.regadditgPromise.then(v => { 
											that.setData({
												mbrinfoflg: that.data.inputmbrinfoflg,
												mbrinfoItg: that.data.addItg
											})
											// console.log(that.data.mbrinfoflg,that.data.mbrinfoItg)
											wx.showToast({   // 资料修改成功：弹窗提示
												title: "数据更新成功！",
												image: '../../../../image/Warning.png',
												duration: 3000,
												success:(  //资料提交成功，弹窗后跳转页面
													wx.redirectTo({
														url:App.globalData.homePage+"?mbrinfoflg="+that.data.mbrinfoflg+"&mbrinfoItg="+that.data.mbrinfoItg
													})
												)
											})
										})
									}else{
										wx.showToast({   // 资料修改成功：弹窗提示
											title: "数据更新成功！",
											image: '../../../../image/Warning.png',
											duration: 3000,
											success:(  //资料提交成功，弹窗后跳转页面
												wx.redirectTo({
													url:App.globalData.homePage
												})
											)
										})
									}
								}else{
									wx.showToast({   // 资料修改成功：弹窗提示
										title: "数据更新成功！",
										image: '../../../../image/Warning.png',
										duration: 3000,
										success:(  //资料提交成功，弹窗后跳转页面
											wx.redirectTo({
												url:App.globalData.homePage
											})
										)
									})
								}
							}
						)
					}else{
						wx.showModal({
							title:res?res.return_msg:'会员资料更新Api调用失败！'
						})
					}
				}
			)
			}else if( that.data.newPwd =='' || that.data.re_newPwd == ''){   //没有输入新密码
				wx.showToast({   //弹窗提示：请输入新的密码
					title: "请输入新的密码",
					image: '../../../../image/Warning.png',
					duration: 2000
				})
				return;
			}else if(that.data.oldPwd == '' && that.data.newPwd !='' && that.data.re_newPwd != ''){   // 新密码 && 重复新密码已录入，但没有录入现密码的
				wx.showToast({   //弹窗提示：请输入现密码
					title: "请输入现密码",
					image: '../../../../image/Warning.png',
					duration: 2000
				})
				return;
			}else if(that.data.newPwd != that.data.re_newPwd ){ //验证两次新密码输入是否一致
				wx.showToast({   //弹窗提示：//新密码两次输入不一致 (新密码、重复新密码 均不为空)
					title: "新密码不一致",
					image: '../../../../image/Warning.png',
					duration: 2000
				})
				return;
			}else{ 
				//Api请求：04-007 会员密码修改
				Request_post.post(
					config.domainName+"api_wxmkt_server/mbrreg/modifywxmbrpwd",
					{
						oldpwd: that.data.oldPwd,
						newpwd: that.data.newPwd,
						cltid: config.cltid
					},
					function(res){
						if(res &&　res.return_no != 1){
							//弹个提示框 显示接口错误信息(模态弹窗  wx.showModal({})
							wx.showModal({
									title: res.return_msg,
									content: '',
									showCancel:false,
							})
							that.setData({
								oldPwd:"",
								newPwd:"",
								re_newPwd:"",
							})
						return;
					}else{  
						/** 密码修改成功，同时修改会员资料  */ 
						that.setData({
							bdt:that.data.birthday.substring(0,4)+that.data.birthday.substring(5,7)+that.data.birthday.substring(8,10)
						})	
						//Api请求：04-006 会员资料修改
						Request_post.post(
							config.domainName+"api_wxmkt_server/mbrreg/modifywxmbr",
							{
								name: that.data.name,
								sex: that.data.sex,
								birthday: that.data.bdt,
								pltno: "",
								cltid: config.cltid,
							},
							function(res){
								if(res && res.return_no == 1){   //资料修改提交成功
									// console.log(res)
									/** Api mktapi服务：04-001会员信息查询（验证已绑定） */
									Request_get.get(
										config.domainName+"api_wxmkt_server/mbrreg/findwxmbr",
										{
											appid: config.as_appid,
											appuserid: App.globalData.wx_openid, 
											unionid: App.globalData.unionid,
										},
										function(res){
											wx.removeStorageSync('StrMbrInfo')
											wx.setStorageSync('StrMbrInfo', res.return_data)
											let name = wx.getStorageSync('StrMbrInfo').name
											let adr = wx.getStorageSync('StrMbrInfo').adr   
											let birthday = wx.getStorageSync('StrMbrInfo').birthday
			
											if(OLDname == '未命名' || OLDadr == '' || OLDbirthday == '0000-00-00'){
												if(name != '未命名' && adr != '' && birthday != '0000-00-00'){
													// 调用积分增加规则的查询方法（积分增加规则方法中 调用 增加积分的方法: 完善资料送积分）
													that.findmbritgruladd();
													that.regadditgPromise.then(v => { 
														that.setData({
															mbrinfoflg: that.data.inputmbrinfoflg,
															mbrinfoItg: that.data.addItg
														})
														// console.log(that.data.mbrinfoflg,that.data.mbrinfoItg)
														wx.showToast({   // 资料修改成功：弹窗提示
															title: "数据更新成功！",
															image: '../../../../image/Warning.png',
															duration: 3000,
															success:(  //资料提交成功，弹窗后跳转页面
																wx.redirectTo({
																	url:App.globalData.homePage+"?mbrinfoflg="+that.data.mbrinfoflg+"&mbrinfoItg="+that.data.mbrinfoItg
																})
															)
														})
													})
												}else{
													wx.showToast({   // 资料修改成功：弹窗提示
														title: "数据更新成功！",
														image: '../../../../image/Warning.png',
														duration: 3000,
														success:(  //资料提交成功，弹窗后跳转页面
															wx.redirectTo({
																url:App.globalData.homePage
															})
														)
													})
												}
											}else{
												wx.showToast({   // 资料修改成功：弹窗提示
													title: "数据更新成功！",
													image: '../../../../image/Warning.png',
													duration: 3000,
													success:(  //资料提交成功，弹窗后跳转页面
														wx.redirectTo({
															url:App.globalData.homePage
														})
													)
												})
											}
										}
									)
								}else{
									wx.showModal({
										title:res?res.return_msg:'会员资料更新Api调用失败！'
									})
								}
							}
						)

					}

					}
				)
				
			}
	

	},



	/** Api请求  001-会员赚积分活动规则查询 —— 被调用*/
	findmbritgruladd:function(){
		var that = this
		this.setData({
			inputmbrinfoflg: "n",
			addItg: 0,
			Today:unformatDate.DatString(today.getToday()),
			getTodayDtm: unformatDate.DatString(today.getToday()) + unformatDate.DatString(time.getNowTime()) 
		})
		// Api请求：06-001 会员赚积分活动规则查询
		that.regadditgPromise = new Promise ((resolve,reject) => {
			Request_get.get(
				config.domainName+'api_wxmkt_server/mbritgadd/findmbritgruladd',
				{
					additgactid:'02' //赚积分活动规则ID（01-新会员注册送积分、02-完善会员资料奖励积分、03-签到送积分）
				},
				function(res){
					const additgList = res.return_data
					if(additgList.length > 0){
						for(var i in additgList){
							if(  //长期规则
								additgList[i].rulclsid == '01' && additgList[i].itgvlu > 0 &&  additgList[i].enldat <= that.data.getTodayDtm && additgList[i].disdat >= that.data.getTodayDtm){
								var longRuladdItg = additgList[i].itgvlu
								// console.log(longRuladdItg)
							}else if(  //临时规则
								additgList[i].rulclsid == '02' && additgList[i].itgvlu > 0 && additgList[i].enldat <= that.data.getTodayDtm && additgList[i].disdat >= that.data.getTodayDtm){
								var shortRuladdItg  = additgList[i].itgvlu
								// console.log(shortRuladdItg)
							}
						}
						// 临时规则 和 长期规则 的最终赋值（临时规则存在，则积分值为临时规则的积分值，否则为长期规则的积分值）
						shortRuladdItg? that.setData({inputmbrinfoflg:"y",addItg:shortRuladdItg}): that.setData({inputmbrinfoflg:"y",addItg:longRuladdItg})
						// 调用增加积分方法
						that.mbrinfoallitgadd();
						resolve(true);
					}else{
						that.setData({inputmbrinfoflg:"n",addItg:0})
						resolve(true);
					}
			})
		})
	},

	/** Api请求  06-002:会员积分增加 —— 被06-001调用*/
	mbrinfoallitgadd:function(){
		var that = this
		that.setData({
			bllno: Math.round(new Date() / 1000),
		})
		Request_post.post(
			config.domainName+"api_wxmkt_server/mbritgadd/addmbritg",
			{
				oprcltid: "001",
				oprid: "51",
				oprdat: that.data.getTodayDtm,     
				srcbllno: that.data.bllno,
				additgvlu: that.data.addItg,
				brief: "完善会员资料送积分"
			},
			function(res){
				if(res && res.return_no == 1){
					that.setData({
						itgaddflg: '01',
						msg: res.return_msg
					})
				}
			}
		)
	},








 

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {
	
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},
	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {

	},
	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

})
